Lenguaje script de navegador: JavaScript

JavaScript

JavaScript es un lenguaje utilizado en el desarrollo de aplicaciones web con la idea de aumentar la interacción con el usuario e introducir ciertos efectos (dinamismo) en la web. Se trata de un "lenguaje de programación" interpretado y ligero que permite realizar Scripts.

Un Script es todo programa de secuencia de comandos.

Aunque JavaScript no es considerado un lenguaje de programación, posee unas estructuras similares a las de cualquier lenguaje:

  1. Sentencias.

  2. Palabras reservadas.

  3. Estructuras de control.

Para poder introducir código JavaScript en una web existen diferentes alternativas:

Para facilitar el mantenimiento de las aplicaciones web se suele utilizar un archivo externo para incluir el código JavaScript de la aplicación.

 

Ejemplos

Sentencias

 

Sentencias

 

Palabras reservadas

 

Palabras_reservadas

 

Estructuras de control

 

Estructura_de_control

 

 

DOM

BOM

Vista general del modelo generado que ejecuta el navegador

 

DOM (Document Objet Model), modelo de objetos del documento, es una estructura arbórea que crea el navegador cuando se carga una web.

Si el navegador encuentra HTML mal escrito, lo corrige automáticamente al construir el modelo.

En DOM, cada etiqueta HTML es un objeto.

En DOM se encuentran diferentes tipos de elementos:

DOM ofrece diferentes tipos de funciones para crear y/o borrar elementos del documento web, permitiendo a los programadores disponer de un control preciso sobre la estructura del documento.

 

Ejemplo

HTML

 

DOM

DOM_viewer

 

Existen diferentes formas de acceso a los nodos dependiendo del tipo al que hagamos referencia:

 

La propiedades de navegación se dividen en dos grupos:

Propiedades de elementos HTMLDescripción
ARRAY childNodesDevuelve una lista de nodos hijos. Incluye nodos de texto y comentarios.
NODE parentNodeDevuelve el nodo padre del nodo o NULL si no tiene.
NODE firstChildDevuelve el primer nodo hijo.
NODE lastChildDevuelve el último nodo hijo.
NODE previousSiblingDevuelve el nodo hermano anterior o NULL si no tiene.
NODE nextSiblingDevuelve el nodo hermano siguiente o NULL si no tiene.

 

Propiedades de elementos HTMLDescripción
ARRAY childrenDevuelve una lista de elementos HTML hijos.
ELEMENT parentElementDevuelve el padre del elemento o NULL si no tiene.
ELEMENT firstElementChildDevuelve el primer elemento hijo.
ELEMENT lastElementChildDevuelve el último elemento hijo.
ELEMENT previousElementSiblingDevuelve el elemento hermano anterior o NULL si no tiene.
ELEMENT nextElementSiblingDevuelve el elemento hermano siguiente o NULL si no tiene.

 

Eventos

Una de las posibilidades de JavaScript es poder manejar eventos que ocurren en un documento web.

Un evento es una señal de que algo ha ocurrido.

La introducción de eventos permite realizar controles, interactuar con el usuario... Aunque una de las limitaciones es la incompatibilidad con todos los navegadores, por ello, para poder incluir eventos es necesario saber cuáles son los que se pueden incluir.

Hay diferentes categorías de eventos:

 

Para interactuar con eventos se requiere de una función handler, que ejecuta un código JavaScript cuando ocurre algo.

El handler se establece en el HTML con un atributo llamado on<event>.

Hay tres formas de asignar handlers:

  1. Con atributos HTML:

    <button onclick="alert(this.innerHTML)">Haz click en mí</button>

  2. En las propiedades del DOM:

    elem.onclick = function

  3. A través de métodos:

    • Para agregar: elem.addEventListener(event, handler[, phase])

    • Para quitar: removeEventListener

 

jQuery

JQuery es una librería multiplataforma de JavaScript que facilita la programación de JavaScript, proporcionando un código más reducido y compatible con casi todos los navegadores.

JQuery implementa funcionalidades avanzadas, es decir, utiliza el DOM internamente para facilitar las tareas a los desarrolladores.

JQuery está programada de modo eficiente, ocupando una decena de KBs.

 

Principales características

 

Comparativa entre código JavaScript y jQuery

JavaScript

 

jQuery

 

PropiedadesDescripción
children()Obtener todos los nodos hijo o descendientes del nodo actual.
parent()Obtener el nodo padre o nodo ascendente del nodo actual.
parentsObtener todos los ascendentes del nodo hasta la raíz.
sibilingsObtener todos los nodos hermano del nodo actual.
nest() y prev()Avanzar o retroceder a través de la lista de nodos hermanos.

 

Manipulación DOM
Propiedades de elementos HTMLDescripción
Get ContentExtraer el contenido del HTML.
SetContentPoner contenido a un elemento HTML.
Get Form FieldsObtener el valor de un campo de un formulario.
Set Form FieldsAsignar valor a un campo de un formulario.
Replacement ElementsReemplazar un elemento completo del DOM.

 

Sintaxis de jQuery

La sintaxis de jQuery se basa en el objeto jQuery ó $().

Este objeto tiene sus métodos, por lo que la forma más común sería la siguiente: $("selector").metodo(argumentos);

En esta sintaxis básica observamos las siguientes partes:

 

Ejemplos
  1. Selecciona el primer elemento <a> con la clase external.

$(‘a.external:first');

  1. Selecciona todos los elementos <tr> impares de una tabla.

$(‘tr:odd');

  1. Selecciona todos los elementos del tipo input dentro del formulario #myForm.

$(‘#myForm:input');

  1. Selecciona todos los <divs> visibles.

$(‘div:visible');

  1. Selecciona los <divs> excepto los 3 primeros.

$(‘div:gt(2)’);

  1. Selecciona todos los párrafos de la página con al menos un enlace.

$(‘p[a]');

  1. Selecciona todos los radiobutton de los formularios de la página.

$(‘input:radio');

  1. Selecciona todos los enlaces que contengan la palabra "Imprimir“.

$(‘a:contains("Imprimir")');

  1. Selecciona todos los elementos pares de una lista.

$("ul#menuPrincipal li:even”);

  1. Selecciona todos los elementos impares de una lista.

$("ul#menuPrincipal li:odd”);

 

AJAX (Asynchronous JavaScript y XML)

El funcionamiento normal de una web implica que al cambiar un elemento de su interfaz sea necesario enviar una petición al servidor y que este reenvíe la página completa modificada. Sin embargo, esto tiene sentido cuando se trata de una página nueva y no cuando se trata de un cambio aislado en su contenido, ya que realizar recargas innecesarias no es optimo y aumenta los tiempos de carga.

Para este propósito, se hace uso de una combinación de diferentes tecnologías llamada AJAX (Asynchronous JavaScript y XML), que permite recargar determinadas áreas de la web sin tener que realizar una recarga completa de la página. Mejorando los tiempos de respuesta de las aplicaciones.

Con AJAX, JavaScript no tiene que esperar la respuesta del servidor, sino que puede:

  1. Ejecutar otros scripts a la espera de respuesta del servidor.

  2. Tratar la respuesta cuando la respuesta esté lista.

 

Características

En AJAX se utiliza una combinación de:

Uso de tecnologías Ajax:

 

Para poder utilizar AJAX en una web es necesario activar dicha funcionalidad.

Para ello se distinguen los siguientes pasos:

  1. Llamada a JavaScript AJAX: La petición al servidor debe realizarse a través de una función JavaScript que a su vez realice la llamada a AJAX.

  2. Petición asíncrona al servidor: La función que realiza la petición debe utilizar un objeto especial llamado XMLHttpRequest, que debe procesar la petición asíncrona. Este funcionamiento permite que la página siga con su funcionamiento normal mientras se cargan los nuevos datos.

  3. Recuperación de datos: Cuando se procesan los datos recibidos en el elemento XMLHttpRequest, es necesario adaptarlos y recuperar la parte relevante.

  4. Modificación de la página: El cliente es el responsable de actualizar los datos y visualizar los cambios realizados.

 

XMLHttpRequest

El objeto XMLHttpRequestes el fundamento de AJAX y todos los navegadores actuales lo soportan.

La sintaxis básica para crear un objeto XMLHttpRequest es: variable = new XMLHttpRequest(); request = new XMLHttpRequest();

Para enviar una solicitud a un servidor, se utilizan los métodos open() y send() del objeto XMLHttpRequest:

 

Métodos GET y POST:

 

Cuando se utiliza async = true, especifica una función que se ejecutará cuando la respuesta esté lista en el evento onreadystatechange.

Usar async = false no es recomendable, pero para unos requerimientos pequeños esto puede ser aceptable.

 

Para obtener una respuesta del servidor, se utiliza la propiedad responseText o responseXML del objeto XMLHttpRequest:

 

Tres propiedades importantes del objeto XMLHttpRequest:

 

El evento onreadystatechange se desencadena cinco veces (0-4), una vez para cada cambio en readyState.

Lo ideal es tener readyState en 4 y el status es 200.

 

by Jose Manuel Pinillos